<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="google-site-verification" content="xBT4GhYoi5qRD5tr338pgPM5OWHHIDR6mNg1a3euekI" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="keyword"  content="Tooi">
    <link rel="shortcut icon" href="/img/favicon.ico">

    <title>
        
        使用 GitLab Runner 实现持续集成 - Tooi的博客 | Tooi-Blog
        
    </title>

    <!-- Custom CSS -->
    <link rel="stylesheet" href="/css/aircloud.css">
    <link rel="stylesheet" href="/css/gitment.css">
    <!--<link rel="stylesheet" href="https://imsun.github.io/gitment/style/default.css">-->
    <link href="//at.alicdn.com/t/font_620856_pl6z7sid89qkt9.css" rel="stylesheet" type="text/css">
    <!-- ga & ba script hoook -->
    <script></script>
</head>

<body>

<div class="site-nav-toggle" id="site-nav-toggle">
    <button>
        <span class="btn-bar"></span>
        <span class="btn-bar"></span>
        <span class="btn-bar"></span>
    </button>
</div>

<div class="index-about">
    <i> 瞄准月亮。 </i>
</div>

<div class="index-container">
    
    <div class="index-left">
        
<div class="nav" id="nav">
    <div class="avatar-name">
        <div class="avatar ">
            <img src="/img/avatar.jpg" />
        </div>
        <div class="name">
            <i>Tooi6</i>
        </div>
    </div>
    <div class="contents" id="nav-content">
        <ul>
            <li >
                <a href="/">
                    <i class="iconfont icon-shouye1"></i>
                    <span>主页</span>
                </a>
            </li>
            <li >
                <a href="/tags">
                    <i class="iconfont icon-biaoqian1"></i>
                    <span>标签</span>
                </a>
            </li>
            <li >
                <a href="/archives">
                    <i class="iconfont icon-guidang2"></i>
                    <span>存档</span>
                </a>
            </li>
            <li >
                <a href="/about/">
                    <i class="iconfont icon-guanyu2"></i>
                    <span>关于</span>
                </a>
            </li>
            
            <li>
                <a id="search">
                    <i class="iconfont icon-sousuo1"></i>
                    <span>搜索</span>
                </a>
            </li>
            
        </ul>
    </div>
    
        <div id="toc" class="toc-article">
    <ol class="toc"><li class="toc-item toc-level-3"><a class="toc-link" href="#概述"><span class="toc-text">概述</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#什么是持续集成、交付、部署？"><span class="toc-text">什么是持续集成、交付、部署？</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#持续集成的流程"><span class="toc-text">持续集成的流程</span></a></li></ol></li><li class="toc-item toc-level-3"><a class="toc-link" href="#使用GitLab持续集成"><span class="toc-text">使用GitLab持续集成</span></a><ol class="toc-child"><li class="toc-item toc-level-4"><a class="toc-link" href="#Docker-部署GitLab-Runner"><span class="toc-text">Docker 部署GitLab Runner</span></a></li><li class="toc-item toc-level-4"><a class="toc-link" href="#配置项目"><span class="toc-text">配置项目</span></a></li></ol></li></ol>
</div>
    
</div>


<div class="search-field" id="search-field">
    <div class="search-container">
        <div class="search-input">
            <span id="esc-search"> <i class="icon-fanhui iconfont"></i></span>
            <input id="search-input"/>
            <span id="begin-search">搜索</span>
        </div>
        <div class="search-result-container" id="search-result-container">

        </div>
    </div>
</div>

        <div class="index-about-mobile">
            <i> 瞄准月亮。 </i>
        </div>
    </div>
    
    <div class="index-middle">
        <!-- Main Content -->
        


<div class="post-container">
    <div class="post-title">
        使用 GitLab Runner 实现持续集成
    </div>

    <div class="post-meta">
        <span class="attr">发布于：<span>2019-11-16 21:18:19</span></span>
        
        <span class="attr">标签：/
        
        <a class="tag" href="/tags/#持续集成" title="持续集成">持续集成</a>
        <span>/</span>
        
        <a class="tag" href="/tags/#GitLab Runner" title="GitLab Runner">GitLab Runner</a>
        <span>/</span>
        
        
        </span>
        <span class="attr">访问：<span id="busuanzi_value_page_pv"></span>
</span>
</span>
    </div>
    <div class="post-content ">
        <h3 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h3><h4 id="什么是持续集成、交付、部署？"><a href="#什么是持续集成、交付、部署？" class="headerlink" title="什么是持续集成、交付、部署？"></a>什么是持续集成、交付、部署？</h4><ul>
<li><strong>持续集成：</strong>  <blockquote>
<p>持续集成强调开发人员提交了新代码之后，<strong>立刻进行构建、（单元）测试</strong>。根据测试结果，我们可以确定新代码和原有代码能否正确地集成在一起。</p>
</blockquote>
</li>
<li><strong>持续交付：</strong><blockquote>
<p>持续交付在持续集成的基础上，将集成后的代码部署到更贴近真实运行环境的 <strong>类生产环境（production-like environments）</strong> 中。如果代码没有问题，可以继续手动部署到生产环境中。</p>
</blockquote>
</li>
<li><strong>持续部署：</strong><blockquote>
<p>持续部署则是在持续交付的基础上，把<strong>部署到生产环境的过程自动化</strong><br><img src="https://note.youdao.com/yws/api/personal/file/31BFA0F6FF4D4BB3A5CC30B1F301E8FB?method=download&shareKey=3662d215358c3e875a367f453f5ab3ef" alt="image"></p>
</blockquote>
</li>
</ul>
<h4 id="持续集成的流程"><a href="#持续集成的流程" class="headerlink" title="持续集成的流程"></a>持续集成的流程</h4><ul>
<li><strong>提交</strong><blockquote>
<p>开发者想代码仓库提交代码</p>
</blockquote>
</li>
<li><strong>测试（第一轮）：</strong><blockquote>
<p>代码仓库对 commit 操作配置了钩子（hook），只要提交代码或者合并进主干，就会跑自动化测试</p>
</blockquote>
</li>
<li><strong>构建</strong><blockquote>
<p>通过第一轮测试，代码就可以合并进主干，就算可以交付了。交付后，就先进行构建（build），再进入第二轮测试。所谓构建，指的是<strong>将源码转换为可以运行的实际代码</strong>，比如安装依赖，配置各种资源（样式表、JS脚本、图片）等等</p>
</blockquote>
</li>
<li><strong>测试（第二轮）</strong>  <blockquote>
<p>第二轮是<strong>全面测试</strong>，单元测试和集成测试都会跑，有条件的话，也要做端对端测试。所有测试以自动化为主，少数无法自动化的测试用例，就要人工跑。  </p>
</blockquote>
</li>
<li><strong>部署</strong><blockquote>
<p>通过了第二轮测试，当前代码就是一个可以直接部署的版本（artifact）。将这个版本的所有文件打包（ tar filename.tar * ）存档，发到生产服务器。</p>
</blockquote>
</li>
<li><strong>回滚</strong><blockquote>
<p>一旦当前版本发生问题，就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接，指向上一个版本的目录。</p>
</blockquote>
</li>
</ul>
<h3 id="使用GitLab持续集成"><a href="#使用GitLab持续集成" class="headerlink" title="使用GitLab持续集成"></a>使用GitLab持续集成</h3><h4 id="Docker-部署GitLab-Runner"><a href="#Docker-部署GitLab-Runner" class="headerlink" title="Docker 部署GitLab Runner"></a>Docker 部署GitLab Runner</h4><ul>
<li><strong>环境准备</strong></li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"># 创建目录</span><br><span class="line">mkdir /usr/local/docker/runner</span><br><span class="line">mkdir /usr/local/docker/runner/environment</span><br><span class="line"></span><br><span class="line"># 下载jdk到 environment 目录下</span><br><span class="line"># 在 environment 下新建 daemon.json 配置加速器和仓库地址  </span><br><span class="line">&#123;</span><br><span class="line">  &quot;registry-mirrors&quot;: [</span><br><span class="line">    &quot;https://kzzvxj0z.mirror.aliyuncs.com&quot;</span><br><span class="line">  ],</span><br><span class="line">  &quot;insecure-registries&quot;: [</span><br><span class="line">    &quot;192.168.213.132:5000&quot;</span><br><span class="line">  ]</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<ul>
<li><strong>Dockerfile</strong></li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br></pre></td><td class="code"><pre><span class="line"># 在 environment 目录下新建 Dockfile</span><br><span class="line"></span><br><span class="line">FROM gitlab/gitlab-runner:v11.0.2</span><br><span class="line">MAINTAINER Lusifer &lt;topsale@vip.qq.com&gt;</span><br><span class="line"></span><br><span class="line"># 修改软件源</span><br><span class="line">RUN echo &apos;deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse&apos; &gt; /etc/apt/sources.list &amp;&amp; \</span><br><span class="line">    echo &apos;deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse&apos; &gt;&gt; /etc/apt/sources.list &amp;&amp; \</span><br><span class="line">    echo &apos;deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse&apos; &gt;&gt; /etc/apt/sources.list &amp;&amp; \</span><br><span class="line">    echo &apos;deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse&apos; &gt;&gt; /etc/apt/sources.list &amp;&amp; \</span><br><span class="line">    apt-get update -y &amp;&amp; \</span><br><span class="line">    apt-get clean</span><br><span class="line"></span><br><span class="line"># 安装 Docker</span><br><span class="line">RUN apt-get -y install apt-transport-https ca-certificates curl software-properties-common &amp;&amp; \</span><br><span class="line">    curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - &amp;&amp; \</span><br><span class="line">    add-apt-repository &quot;deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable&quot; &amp;&amp; \</span><br><span class="line">    apt-get update -y &amp;&amp; \</span><br><span class="line">    apt-get install -y docker-ce</span><br><span class="line">COPY daemon.json /etc/docker/daemon.json</span><br><span class="line"></span><br><span class="line"># 安装 Docker Compose</span><br><span class="line">WORKDIR /usr/local/bin</span><br><span class="line">RUN wget https://raw.githubusercontent.com/topsale/resources/master/docker/docker-compose</span><br><span class="line">RUN chmod +x docker-compose</span><br><span class="line"></span><br><span class="line"># 安装 Java</span><br><span class="line">RUN mkdir -p /usr/local/java</span><br><span class="line">WORKDIR /usr/local/java</span><br><span class="line">COPY jdk-8u152-linux-x64.tar.gz /usr/local/java</span><br><span class="line">RUN tar -zxvf jdk-8u152-linux-x64.tar.gz &amp;&amp; \</span><br><span class="line">    rm -fr jdk-8u152-linux-x64.tar.gz</span><br><span class="line"></span><br><span class="line"># 安装 Maven</span><br><span class="line">RUN mkdir -p /usr/local/maven</span><br><span class="line">WORKDIR /usr/local/maven</span><br><span class="line">RUN wget https://raw.githubusercontent.com/topsale/resources/master/maven/apache-maven-3.5.3-bin.tar.gz</span><br><span class="line"># COPY apache-maven-3.5.3-bin.tar.gz /usr/local/maven</span><br><span class="line">RUN tar -zxvf apache-maven-3.5.3-bin.tar.gz &amp;&amp; \</span><br><span class="line">    rm -fr apache-maven-3.5.3-bin.tar.gz</span><br><span class="line"># COPY settings.xml /usr/local/maven/apache-maven-3.5.3/conf/settings.xml</span><br><span class="line"></span><br><span class="line"># 配置环境变量</span><br><span class="line">ENV JAVA_HOME /usr/local/java/jdk1.8.0_152</span><br><span class="line">ENV MAVEN_HOME /usr/local/maven/apache-maven-3.5.3</span><br><span class="line">ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin</span><br><span class="line"></span><br><span class="line">WORKDIR /</span><br></pre></td></tr></table></figure>

<ul>
<li><strong>开始构建</strong>  </li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"># 在 runner 目录下新建docker-compose.yml  </span><br><span class="line">version: &apos;3.1&apos;</span><br><span class="line">services:</span><br><span class="line">  gitlab-runner:</span><br><span class="line">    build: environment</span><br><span class="line">    restart: always</span><br><span class="line">    container_name: gitlab-runner</span><br><span class="line">    privileged: true</span><br><span class="line">    volumes:</span><br><span class="line">      - /usr/local/docker/runner/config:/etc/gitlab-runner</span><br><span class="line">      - /var/run/docker.sock:/var/run/docker.sock</span><br><span class="line"></span><br><span class="line"># 开始构建</span><br><span class="line">docker-compose up -d</span><br></pre></td></tr></table></figure>

<ul>
<li><strong>注册Runner</strong><blockquote>
<p>先在 项目&gt;设置&gt;CI/CD&gt;Runner 下查看：<br><img src="https://note.youdao.com/yws/api/personal/file/050A604056834955BFB6CBBDEC3DD364?method=download&shareKey=9b94fca8ff0a6b19bf4b873c38ed0bcb" alt="image"></p>
</blockquote>
</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"># 注册Runner</span><br><span class="line">docker exec -it gitlab-runner gitlab-runner register</span><br><span class="line"></span><br><span class="line"># 输入 GitLab 地址</span><br><span class="line">Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):</span><br><span class="line">http://192.168.213.133:8080/</span><br><span class="line"></span><br><span class="line"># 输入 GitLab Token</span><br><span class="line">Please enter the gitlab-ci token for this runner:</span><br><span class="line">ui6B3hj28Biv99ssyTJz</span><br><span class="line"></span><br><span class="line"># 输入 Runner 的说明</span><br><span class="line">Please enter the gitlab-ci description for this runner:</span><br><span class="line">可以为空</span><br><span class="line"></span><br><span class="line"># 设置 Tag，可以用于指定在构建规定的 tag 时触发 ci</span><br><span class="line">Please enter the gitlab-ci tags for this runner (comma separated):</span><br><span class="line">deploy</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"># 选择 runner 执行器，这里我们选择的是 shell</span><br><span class="line">Please enter the executor: virtualbox, docker+machine, parallels, shell, ssh, docker-ssh+machine, kubernetes, docker, docker-ssh:</span><br><span class="line">shell</span><br></pre></td></tr></table></figure>

<h4 id="配置项目"><a href="#配置项目" class="headerlink" title="配置项目"></a>配置项目</h4><blockquote>
<p>以 iCoin-eureka 为例子：</p>
</blockquote>
<ul>
<li><strong>新建 .gitlab-ci.yml 文件</strong></li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line">stages:</span><br><span class="line">  - build</span><br><span class="line">  - push</span><br><span class="line">  - run</span><br><span class="line">  - clean</span><br><span class="line"></span><br><span class="line">build:</span><br><span class="line">  stage: build</span><br><span class="line">  script:</span><br><span class="line">    - /usr/local/maven/apache-maven-3.5.3/bin/mvn clean package   # mvn 打包</span><br><span class="line">    - cp target/icoin-eureka-1.0.0-SNAPSHOT.jar docker            # 取出jar包</span><br><span class="line">    - cd docker                                                   </span><br><span class="line">    - docker build -t 192.168.213.132:5000/icoin-eureka .         # 构建镜像</span><br><span class="line"></span><br><span class="line">push:</span><br><span class="line">  stage: push</span><br><span class="line">  script:</span><br><span class="line">    - docker push 192.168.213.132:5000/icoin-eureka               # push 到register</span><br><span class="line"></span><br><span class="line">run:</span><br><span class="line">  stage: run</span><br><span class="line">  script:</span><br><span class="line">    - cd docker</span><br><span class="line">    - docker-compose down                                        # 先关闭之前的</span><br><span class="line">    - docker-compose up -d                                       # 启动</span><br><span class="line">clean:</span><br><span class="line">  stage: clean</span><br><span class="line">  script:</span><br><span class="line">    - docker rmi $(docker images -q -f dangling=true)            # 清理</span><br></pre></td></tr></table></figure>

<ul>
<li><p><strong>新建Dockerfile</strong>  </p>
<blockquote>
<p>使用 dockerize 等待 icoin-config 启动再运行</p>
</blockquote>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">FROM openjdk:8-jre</span><br><span class="line">MAINTAINER Tooi &lt;1348562497@qq.com&gt;</span><br><span class="line"></span><br><span class="line">ENV APP_VERSION 1.0.0-SNAPSHOT</span><br><span class="line"></span><br><span class="line">ENV DOCKERIZE_VERSION v0.6.1</span><br><span class="line">RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \</span><br><span class="line">    &amp;&amp; tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \</span><br><span class="line">    &amp;&amp; rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz</span><br><span class="line">#COPY dockerize-alpine-linux-amd64-v0.6.1.tar.gz /</span><br><span class="line">#</span><br><span class="line">#RUN tar -C /usr/local/bin -xzvf dockerize-alpine-linux-amd64-v0.6.1.tar.gz \</span><br><span class="line">#	&amp;&amp; rm dockerize-alpine-linux-amd64-v0.6.1.tar.gz</span><br><span class="line"></span><br><span class="line">RUN mkdir /app</span><br><span class="line"></span><br><span class="line">COPY icoin-eureka-$APP_VERSION.jar /app/app.jar</span><br><span class="line"></span><br><span class="line">ENTRYPOINT [&quot;dockerize&quot;, &quot;-timeout&quot;, &quot;5m&quot;, &quot;-wait&quot;, &quot;http://192.168.213.129:8888/icoin-eureka/prod&quot;, &quot;java&quot;, &quot;-Djava.security.egd=file:/dev/./urandom&quot;, &quot;-jar&quot;, &quot;/app/app.jar&quot;, &quot;--spring.profiles.active=prod&quot;]</span><br><span class="line"></span><br><span class="line">EXPOSE 8888</span><br></pre></td></tr></table></figure>
</li>
<li><p><strong>新建 docker-conpose.yml</strong></p>
</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">version: &apos;3.1&apos;</span><br><span class="line">services:</span><br><span class="line">  icoin-eureka:</span><br><span class="line">    restart: always</span><br><span class="line">    image: 192.168.213.132:5000/icoin-eureka</span><br><span class="line">    container_name: icoin-eureka</span><br><span class="line">    ports:</span><br><span class="line">      - 8761:8761</span><br><span class="line">    networks:</span><br><span class="line">      - eureka_network</span><br><span class="line"></span><br><span class="line">networks:</span><br><span class="line">  eureka_network:</span><br></pre></td></tr></table></figure>


        
            <div class="donate-container">
    <div class="donate-button">
        <button id="donate-button">赞赏</button>
    </div>
    <div class="donate-img-container hide" id="donate-img-container">
        <img id="donate-img" src="" data-src="/img/donate.png">
        <p> 感谢鼓励 </p>
    </div>
</div>
        
        <br />
        <div id="comment-container">
        </div>
        <div id="disqus_thread"></div>

        <div id="lv-container">
        </div>

    </div>
</div>

    </div>
</div>


<footer class="footer">
    <ul class="list-inline text-center">
        
        

        

        

        
        <li>
            <a target="_blank"  href="https://github.com/Tooi6">
                            <span class="fa-stack fa-lg">
                                <i class="iconfont icon-github"></i>
                            </span>
            </a>
        </li>
        

        

    </ul>
    
    <p>
        <span>/</span>
        
        <span><a href="https://github.com/Tooi6" target="_blank" rel="noopener">Tooi6</a></span>
        <span>/</span>
        
        <span><a href="#">Tooi-Blog</a></span>
        <span>/</span>
        
        <span><a href="#">It helps SEO</a></span>
        <span>/</span>
        
    </p>
    
    <p>
        <span id="busuanzi_container_site_pv">
            <span id="busuanzi_value_site_pv"></span>PV
        </span>
        <span id="busuanzi_container_site_uv">
            <span id="busuanzi_value_site_uv"></span>UV
        </span>
        Created By <a href="https://hexo.io/" target="_blank" rel="noopener">Hexo</a>  Theme <a href="https://github.com/aircloud/hexo-theme-aircloud" target="_blank" rel="noopener">AirCloud</a></p>
</footer>




</body>

<script>
    // We expose some of the variables needed by the front end
    window.hexo_search_path = "search.json"
    window.hexo_root = "/"
    window.isPost = true
</script>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script src="/js/index.js"></script>
<script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>




</html>
